利用紫金橋軟件提高畫面組態(tài)速度
概述
編寫程序時(shí),我們經(jīng)常將相似的模塊組織成函數(shù),以避免重復(fù)編碼,這樣維護(hù)起來也方便。同樣在工程組態(tài)時(shí),也存在相似的功能,相似的表現(xiàn)形式,如果組織合理,同樣可以讓我們事半功倍。下面以紫金橋軟件為例,來說明如何減少重復(fù)工作。
紫金橋軟件提供了間接變量,變量轉(zhuǎn)向、圖形模板、圖形樣板等多種手段來避免畫面組態(tài)的重復(fù)工作,下面就對這些手段予以詳細(xì)說明。
間接變量的使用
間接變量是一種特殊形式的中間變量,是能夠被動(dòng)態(tài)指向其他變量的變量,或稱為指針變量,它類似于C語言中的指針。間接變量在初始狀態(tài)并不指向任何變量,它需要通過特殊的賦值語句來定向。其形式如下:
INDIRVAR = &TAGETBAR
其中INDIRVAR:代表間接變量;TAGETBAR表示目標(biāo)變量,目標(biāo)變量一般為數(shù)據(jù)庫變量。
經(jīng)過這種變量重定向后,變量INDIRVAR和TAGETBAR的數(shù)值將保持一致。改變INDIRVAR的數(shù)值就等于改變TAGETBAR的值,反之亦然。二者綁定到一起,這種綁定將一直保持,直到INDIRVAR 變量被重定向?yàn)槠渌兞?。利用間接變量可以避免畫面上的大量重復(fù)的工作,舉例如下:
例如,如上所示為燈光控制畫面,圖中紅色的為照明燈。鼠標(biāo)單擊照明燈將出現(xiàn)照明設(shè)置對話框。
圖中有9盞燈,每盞燈的設(shè)置框都類似,只是關(guān)聯(lián)的變量不同。如果做將設(shè)置對話框畫面畫好后,復(fù)制幾份,將變量分別替換為對應(yīng)的照明燈的變量,倒也不費(fèi)事。但是困難的是什么時(shí)候認(rèn)為第一幅畫面已經(jīng)定型,決定復(fù)制為第二幅。因?yàn)橐坏┓?,如果想對畫面進(jìn)行調(diào)整,勢必兩幅畫面都要修改。
對于這種情況,在畫面中可以使用間接變量。在單擊照明燈時(shí),將間接變量重定向指向?qū)嶋H變量。例如在照明燈的鼠標(biāo)動(dòng)作中填寫如下腳本:
第一盞燈:
INDIRVAR = &LAMP1.PV;
DISPLAY(“站臺(tái)照明設(shè)置”);
第二盞燈:
INDIRVAR = &LAMP2.PV;
DISPLAY(“站臺(tái)照明設(shè)置”);
其他類似。
而在站臺(tái)照明設(shè)置窗口中,只使用間接變量INDIRVAR,這樣你只需要做一幅畫面就可以了,減少了畫面編輯和維護(hù)工作量。
變量轉(zhuǎn)向功能
間接變量只能重定向到畫面中已經(jīng)存在的變量,這就無法讓間接變量指向數(shù)據(jù)庫動(dòng)態(tài)加入新點(diǎn)。變量轉(zhuǎn)向功能正是為此目的而產(chǎn)生的。
變量轉(zhuǎn)向是通過VarRedir函數(shù)實(shí)現(xiàn)的,該函數(shù)格式如下:
VarRedir(Tag, NewTag)
該函數(shù)有兩個(gè)含義:
1)如果Tag為數(shù)據(jù)庫變量,則對其進(jìn)行重定向,即改變變量的數(shù)據(jù)庫參數(shù)項(xiàng),使其指向其他位號(hào)。
2)如果Tag為間接變量,則改變間接變量的指向。
參數(shù)
Tag:字符串,數(shù)據(jù)庫變量或間接變量,必須是變量本身,不能為變量名稱字符串。
NewTag:字符串,新位號(hào)名或變量名。數(shù)據(jù)庫位號(hào)要包括參數(shù)。
在上面例子中可以將INDIRVAR = &LAMP1.PV替換為VarRedir(INDIRVAR, "LAMP1.PV")。
通過間接變量,VarRedir都可以將變量轉(zhuǎn)向到數(shù)據(jù)庫變量、中間變量、窗口變量,那么是不是變量重定向函數(shù)可以完全代替間接變量呢?
不是的。
- 間接變量在組態(tài)時(shí)就對變量進(jìn)行編譯、檢查,所以使用間接變量更安全些,同樣使用VarRedir更靈活,更適合于有規(guī)律的、重復(fù)度較高的替換。
- 間接變量在組態(tài)時(shí)就對變量進(jìn)行編譯、檢查,所以其替換是靜態(tài)的,速度比較快。
圖形模板
當(dāng)多幅畫面圖像相同,僅僅是每幅畫面顯示的點(diǎn)不同時(shí),可以使用圖形模板。
注意這里說的是點(diǎn)不同,而不是變量不同。一個(gè)點(diǎn)可以有很多參數(shù),每個(gè)”點(diǎn).參數(shù)”對應(yīng)一個(gè)變量??梢哉J(rèn)為點(diǎn)是變量的集合。
下面,我們通過一個(gè)簡單的例子來說明圖形模板對象的使用方法。此例子是使用一幅簡單的畫面來顯示點(diǎn)的NAME、DESC、EU、PV、EULO、EUHI六個(gè)基本參數(shù)。
下面是點(diǎn)FI1001的基本參數(shù)畫面:
點(diǎn)FI1002,FI1003等都有與點(diǎn)FI1001類似的基本參數(shù)畫面。如果簡單的復(fù)制,我們可以生成其他點(diǎn)的基本參數(shù)畫面,但是畫面需要調(diào)整時(shí)就很費(fèi)事了。
使用間接變量可以避免畫面復(fù)制的問題,對于上面的畫面我們至少要定義6個(gè)間接變量。變量轉(zhuǎn)向動(dòng)作也要象下面這樣寫很多行。
INDIR_NAME = &FI1001.NAME;
INDIR_DESC = &FI1001.DESC;
INDIR_EU = &FI1001.EU;
INDIR_PV = &FI1001.PV;
INDIR_EULO = &FI1001.EULO;
INDIR_EUHI = &FI1001.EUHI;
是不是看起來很麻煩!
使用圖形模板就可以減少替換語句,只是替換點(diǎn)名即可。方法如下:
在窗口中畫出如下圖素,并將其與圖形模板對象打成單元。
圖中”TP”為圖形模板對象,運(yùn)行時(shí)不可見。
在文本輸出動(dòng)作中,分別輸入變量T.NAME、T.DESC、T.EU,在數(shù)值輸出動(dòng)畫中分別輸入T.PV、T.EULO、T.EUHI等。這些變量都定義為模板變量。
變量轉(zhuǎn)向動(dòng)作只要象下面一行即可。
#TMPL.ChangeTag("T1", "FI1001");
TMPL為圖形模板對象名稱。
圖形樣板
以上講述的都是對變量或點(diǎn)的替換,而樣板是對圖形的替換。
在實(shí)際繪圖中我們經(jīng)常遇到這樣情況,要求畫面中相同的元素使用相同的顏色或字體,而在項(xiàng)目實(shí)施前一段時(shí)間內(nèi)很難確定下來,即便確定下來在項(xiàng)目實(shí)施中難免有些改變。若是沒有確定好規(guī)則,就無法著手工作,如果已經(jīng)繪制了大量的畫面,修改起來是非常繁瑣的事。尤其是對于單元中的圖元改動(dòng)更為復(fù)雜(需要拆開單元,改后再合成單元)。
樣板就是為了解決上述問題而誕生的。樣板用于規(guī)定線的顏色、寬度、線性、填充色、填充樣式、字體、字號(hào)以及圖形的形狀。利用樣板可以方便修改具有相同、相似屬性的圖元。
例如規(guī)定燃油管線使用樣板A(綠色),蒸汽管線使用樣板B(白色),如果要將所有的燃油管線改為黃色,只需要重新定義樣板A的顏色屬性為黃色即可,樣板負(fù)責(zé)對所有畫面中的燃油管線顏色進(jìn)行替換。
結(jié)論
紫金橋軟件提供了很多獨(dú)特的方法來減少組態(tài)工程師的工作,利用這些方法,可以大大減少重復(fù)性勞動(dòng),并使得工程易于維護(hù),提高了工作效率。
提交
紫金橋跨平臺(tái)實(shí)時(shí)數(shù)據(jù)庫發(fā)布會(huì)及入門培訓(xùn)視頻回放
紫金橋跨平臺(tái)實(shí)時(shí)數(shù)據(jù)庫入門培訓(xùn)即將開始啦
紫金橋跨平臺(tái)實(shí)時(shí)數(shù)據(jù)庫RealHistorian
紫金橋跨平臺(tái)實(shí)時(shí)數(shù)據(jù)庫新品發(fā)布會(huì)
跨平臺(tái)實(shí)時(shí)數(shù)據(jù)庫如何實(shí)現(xiàn)表格的保存和讀取